CloudFormationでSageMaker Studioの自動シャットダウン設定を有効にする
はじめに
コンサルティング部の神野です。
2024年9月にSageMaker Studioがアイドル状態のアプリケーションを自動シャットダウンできるようになりました!
コンソール上からは設定できますが、CloudFormationでドメインを作成する際に自動シャットダウンを有効にした状態で作成できないかな〜と思っていたところ、雰囲気としてできそうな項目(IdleSettings)がありました。
実際にCloudFormationのテンプレートを書いて、自動シャットダウン設定を有効にした状態でドメインを作成してみました。
実装
ドメイン作成テンプレートコードを一部抜粋しています。
ポイントはDefaultUserSettings
とDefaultSpaceSettings
の両方にIdleSettings
を記載しているところです。
両方に記載する理由は、SageMaker Studio スペースの種類がPrivate
とShare with my domain
の2種類存在し、DefaultUserSettings
はPrivate
スペース作成時に、DefaultSpaceSettings
はShare with my domain
スペース作成時にそれぞれ反映されるデフォルトの設定だからです。
(最初はその仕組みに気づかず、DefaultSpaceSettings
の箇所だけ記載して、Private
スペースの自動シャットダウンが有効にならずはまりました...)
CloudFormationテンプレート
# 一部抜粋しています。
StudioDomain:
Type: AWS::SageMaker::Domain
Properties:
AppNetworkAccessType: PublicInternetOnly
AuthMode: IAM
DefaultUserSettings:
ExecutionRole: !GetAtt SageMakerExecutionRole.Arn
StudioWebPortal: ENABLED
JupyterLabAppSettings:
AppLifecycleManagement:
# 追加
IdleSettings:
IdleTimeoutInMinutes: 60
LifecycleManagement: ENABLED
MaxIdleTimeoutInMinutes: 525600
MinIdleTimeoutInMinutes: 60
DomainName: TestDomain
SubnetIds: XXX
VpcId: XXXX
DefaultSpaceSettings:
ExecutionRole: !GetAtt SageMakerExecutionRole.Arn
JupyterLabAppSettings:
AppLifecycleManagement:
# 追加
IdleSettings:
IdleTimeoutInMinutes: 60
LifecycleManagement: ENABLED
MaxIdleTimeoutInMinutes: 525600
MinIdleTimeoutInMinutes: 60
IdleSettingsの各パラメータについて
パラメータ名 | 説明 | 設定値 |
---|---|---|
IdleTimeoutInMinutes | アプリケーションが非アクティブ状態と判断されてからシャットダウンされるまでの時間(分) | 60 |
LifecycleManagement | 自動シャットダウン機能の有効/無効を設定 | ENABLED |
MaxIdleTimeoutInMinutes | ユーザーが設定可能な最大のアイドルタイムアウト時間(分) | 525600 |
MinIdleTimeoutInMinutes | ユーザーが設定可能な最小のアイドルタイムアウト時間(分) | 60 |
この設定により、アプリケーションが60分間非アクティブ状態が続くと自動的にシャットダウンされます。
また、ユーザーが60分〜525600分の間で任意のタイムアウト時間を設定することも可能にします。
補足
補足として、ドメイン全体の設定だけでなく、ユーザープロファイルに紐づいた自動シャットダウン設定も作成することも可能です。
# 一部抜粋しています。
StudioUserProfile:
Type: AWS::SageMaker::UserProfile
Properties:
DomainId: !GetAtt StudioDomain.DomainId
UserProfileName: StudioUserTest
UserSettings:
ExecutionRole: !GetAtt SageMakerExecutionRole.Arn
JupyterLabAppSettings:
AppLifecycleManagement:
# 追加
IdleSettings:
IdleTimeoutInMinutes: 60
LifecycleManagement: ENABLED
MaxIdleTimeoutInMinutes: 525600
MinIdleTimeoutInMinutes: 60
テンプレートを実行してみた
上記コードを含んだテンプレートを実行し、自動シャットダウン設定を入れてドメインを作成してみました。
作成したドメインのJupyter Labの項目を見てましょう。
ドメイン側で自動シャットダウンの設定が有効になっていますね!
次にStudioに移動して、JupyterLabのスペースを作成します。
Private Space作成
任意の名前を入れて、Sharing:Private
を選択してCreate space
ボタンを押下します。
作成すると、Idle Shutdown
項目が表示され、60
で設定されているため自動的に設定が有効になっていますね!
Share with my domain Space作成
任意の名前を入れて、Sharing:Share with my domain
を選択してCreate space
ボタンを押下します。
こちらも作成すると、Idle Shutdown
項目が表示され、60
で設定されているため自動的に設定が有効になっていますね!
これでCloudFormationからドメインの自動シャットダウンを有効にして、その設定がスペースにも反映されていることが確認できました!
おわりに
CloudFormationでSageMaker Studioの自動シャットダウン設定を有効にする方法はいかがだったでしょうか。
ドメインの作成手順をCloudFormationなどで自動化している場合は簡単に組み込めるので、有効にしてみるのも手ではないでしょうか!
このブログが少しでも参考になったら幸いです。最後までご覧いただきありがとうございました!